package com.sh.data.engine.domain.common.service;

import com.sh.data.engine.domain.shims.db.BaseDbManager;
import com.sh.data.engine.domain.shims.db.model.FieldInfoDomain;

import java.util.List;
import java.util.Map;

/**
 * @author tinglan.ys
 * @description: 这里我写一些操作数据源的通用方法
 * @date 2022/4/27 上午11:46
 */
public interface TableManager {

    /**
     * @description : 预览:查询表数据列表前10条
     * @author : tinglan.ys
     * @date : 2022/2/10
     */
    List<Map<String, Object>> getDataLimit10(String targetTblName, Long projectId);

    /**
     * @description : 根据自定义sql查询数据
     * @author : tinglan.ys
     * @date : 2022/4/25
     */
    List<Map<String, Object>> getDataBySql(String targetTblName, Long projectId, String sql);

    /**
     * @description : 返回建表语句
     * @author : tinglan.ys
     * @date : 2022/3/24
     */
    String getCreateTableSql(
        BaseDbManager dbManager, List<String> fieldName, String tableName, String dbName);

    /**
     * @description : 获取表字段
     * @author : tinglan.ys
     * @date : 2022/3/18
     */
    List<FieldInfoDomain> getTableField(Long projectId, String tblName);

    List<Map<String, Object>> getDataBySqlLimit10(Long projectId, String sql);
}
